const API = require('../../utils/api')
Page({
  data: {
    isAgree: false,
    canGetPhoneNumber: false, // 是否支持获取手机号
    wxCode: '', // 登录code
    openid: '', // 用户唯一标识
  },
  onLoad() {
    //检查是否支持获取手机号
    this.checkPhoneNumberPermission();
    //提前获取微信code
    this.getWxCode();
  },
  // 检查是否支持获取手机号(个人不支持)
  checkPhoneNumberPermission() {
    wx.getSetting({
      success: (res) => {
        if (res.authSetting['scope.phoneNumber']) {
          this.setData({ canGetPhoneNumber: true });
        }
      },
      fail:(err)=>{
      }
    });
  },
  // 获取wxCode
  getWxCode() {
    wx.login({
      success: (res) => {
        if (res.code) {
          this.setData({ wxCode: res.code });
        } else {
          wx.showToast({
            title: '获取凭证失败，请重试',
            icon: 'none'
          });
        }
      },fail:(err)=>{
      }
    });
  },
  
  // 获取手机号（如果需要）
  getPhoneNumber(e) {
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    if (e.detail.errMsg === "getPhoneNumber:ok") {
      const { code } = this.data;
      const { encryptedData, iv } = e.detail; 
      wx.showLoading({
        title: '登录中...',
      });
      // 发送到后端解密获取手机号
      wx.request({
        url: 'https://your-server-domain.com/api/login-with-phone',
        method: 'POST',
        data: {
          code,
          encryptedData,
          iv
        },
        success: (res) => {
          if (res.data.success) {
            const { openid, phoneNumber } = res.data;
            this.setData({ openid });
            // 存储用户信息
            wx.setStorageSync('openid', openid);
            wx.setStorageSync('phoneNumber', phoneNumber);
            
            // 登录成功
            wx.switchTab({
              url: '/pages/index/index'
            });
          } else {
            wx.showToast({
              title: res.data.message || '登录失败',
              icon: 'none'
            });
          }
        },
        fail: (err) => {
          wx.showToast({
            title: '网络错误，请重试',
            icon: 'none'
          });
        },
        complete: () => {
          wx.hideLoading();
        }
      });
    } else {
      wx.showToast({
        title: '需要授权手机号才能登录',
        icon: 'none'
      });
    }
  },
  // 切换协议同意状态
  toggleAgreement() {
    this.setData({
      isAgree: !this.data.isAgree
    });
  },
  // 查看用户协议
  navigateToAgreement() {
    wx.navigateTo({
      url: '/pages/agreement/agreement?type=user'
    });
  },
  // 查看隐私政策
  navigateToPrivacy() {
    wx.navigateTo({
      url: '/pages/agreement/agreement?type=privacy'
    });
  },
  //用户登录
  onGetUserInfo: function(e) {
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    if (e.detail.userInfo) {
      // 显示加载框
      wx.showLoading({
        title: '登录中...', // 加载提示的标题
        mask: true, // 是否显示透明蒙层，防止触摸穿透
      });
      let userInfo={};
      userInfo.avatar = e.detail.userInfo.avatarUrl;
      userInfo.nickName = e.detail.userInfo.nickName;
      userInfo.id = this.data.wxCode;
      API.userLogin(userInfo).then(res=>{
        wx.setStorageSync('token', res);
        //跳转到登录页
        wx.reLaunch({
          url: '/pages/my/my'
        });
      }).catch(err=>{
        wx.hideLoading()
      });
    } else {
      wx.showToast({
        title: '获取凭证失败，请重试',
        icon: 'none'
      });
    } 
  },
});